const http = require("http");
const fs = require("fs");
const url = require("url");
const qs = require("querystring");

http.createServer((req, res)=>{
    if(req.url !== "/favicon.ico"){
        if(req.url.indexOf("/api") != -1){
            message(req, res);
        }else{
            file(req, res)
        }
    }
}).listen(3000);

function message(req, res){
    let str = "";
    req.on("data",(c)=>{
        str += c;
    });
    req.on("end",()=>{
        let dataObj;
        if(str){
            dataObj = qs.parse(str);
        }else{
            dataObj = url.parse(req.url, true).query;
        }
        if(dataObj.type === "login"){
            login(dataObj,req,res)
        }
        if(dataObj.type === "register"){
            register(dataObj,req,res)
        }
    })
}

// 假设的用户数据的格式
// let userMsg = [{username:"admin",password:1123132},{},...]
let userMsg = [];

function login(data,req,res){
    // console.log("登录的功能")
    // 遍历数据，判断接收到的用户名是否存在    
    let i=0;
    const flag = userMsg.some((val,idx)=>{
        i = idx;
        return val.username === data.username;
    })
    if(flag){
        if(userMsg[i].password === data.password){
            // 登录成功：用户名和密码都符合
            res.write(JSON.stringify({code:2,title:"登录成功",data:data.username}))
        }else{
            // 密码不对：有用户名，但是密码不符
            res.write(JSON.stringify({code:1,title:"密码不对",data:"NOTDATA"}))
        }
    }else{
        // 用户名不存在：没有用户名
        res.write(JSON.stringify({code:0,title:"用户名不存在",data:"NOTDATA"}))
    }
    res.end();
}
function register(data,req,res){
    // console.log("注册的功能")
    // 遍历原有数据
    // 判断接收到的用户名是否已经存在
    if(userMsg.some(val=>val.username === data.username)){
        // 是：用户名重复
        res.write(JSON.stringify({code:0,title:"用户名重复",data:"NOTDATA"}))
    }else{
        // 不是：注册成功
        userMsg.push({
            username: data.username,
            password: data.password
        })
        res.write(JSON.stringify({code:1,title:"注册成功",data:data.username}))
    }
    res.end();
}


function file(req, res){
    const urlObj = url.parse(req.url)
    // console.log(urlObj);
    fs.readFile("./www" + urlObj.pathname, (err, data)=>{
        if(err){
            res.write("404")
        }else{
            res.write(data)
        }
        res.end();
    })
}